const sqlite3 = require('sqlite3').verbose();

const db = new sqlite3.Database('./database.db', (err) => {
  if (err) {
    console.error('数据库连接失败:', err);
    return;
  }
  console.log('成功连接到SQLite数据库');

  initializeDatabase();
});

function initializeDatabase() {
  // 创建版本控制表
  db.run(`CREATE TABLE IF NOT EXISTS schema_version (
    version INTEGER PRIMARY KEY
  )`, (err) => {
    if (err) {
      console.error('创建版本控制表失败:', err);
      return;
    }

    // 检查当前版本号
    db.get('SELECT version FROM schema_version', (err, row) => {
      if (err) {
        console.error('获取版本号失败:', err);
        return;
      }

      let currentVersion = row ? row.version : 0;
      if (currentVersion < 2) {

        // 创建问题表
        db.run(`CREATE TABLE IF NOT EXISTS questions (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          type TEXT NOT NULL,
          content TEXT NOT NULL,
          answer TEXT NOT NULL,
          options TEXT
        )`);

        // 创建答案表
        db.run(`CREATE TABLE IF NOT EXISTS answers (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          student_name TEXT NOT NULL,
          question_id INTEGER NOT NULL,
          answer_text TEXT,
          is_correct BOOLEAN DEFAULT 0,
          submit_time DATETIME DEFAULT CURRENT_TIMESTAMP,
          FOREIGN KEY (question_id) REFERENCES questions(id)
        )`);

        

        // 创建学生表
        db.run(`CREATE TABLE IF NOT EXISTS students (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          name TEXT NOT NULL,
          student_id TEXT NOT NULL UNIQUE
        )`);

        // 插入初始版本号
        db.run('INSERT OR IGNORE INTO schema_version (version) VALUES (2)', (err) => {
          if (err) {
            console.error('插入初始版本号失败:', err);
            return;
          }
          db.get('SELECT changes() AS changes', (err, row) => {
            if (row.changes > 0) {
              console.log('成功插入初始版本号2');
            } else {
              console.log('版本号2已存在，跳过插入');
            }
          });
          if (err) {
            console.error('插入初始版本号失败:', err);
            return;
          }
          console.log('数据库初始化完成，版本号为2');
        });
      } else {
        console.log('当前数据库版本号为', currentVersion);
      }
    });
  });
}

module.exports = { db, initializeDatabase };